package com.huayi.website.service.impl;


import com.huayi.website.entity.ManageUserEntity;
import com.huayi.website.repository.ManageUserRepository;
import com.huayi.website.utils.EnumResultVo;
import com.huayi.website.utils.MD5Utils;
import com.huayi.website.utils.RandomUtils;
import com.huayi.website.utils.ResultVo;
import com.huayi.website.service.ManageUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 描述：
 * 管理员用户Service
 *
 * @author qlp
 * @date 2018-12-26 5:22 PM
 */
@Service
public class ManageUserServiceImpl implements ManageUserService {
    @Autowired
    private ManageUserRepository userRepository;

    /**
     * 管理员登录
     *
     * @param userName
     * @param userPwd
     * @return
     */
    @Override
    public ResultVo<ManageUserEntity> userLogin(String userName, String userPwd) {
        ManageUserEntity entity = userRepository.getUserByUserName(userName);
        if (entity == null) return new ResultVo(EnumResultVo.NotFound, "用户不存在");
        String pwd = MD5Utils.MD5Encode(userPwd);
        String finalPwd = MD5Utils.MD5Encode(pwd + entity.getUserSalf());
        if (finalPwd.equals(entity.getUserPwd()) == false) return new ResultVo(EnumResultVo.DataError, "登录密码不正确");


        return new ResultVo<ManageUserEntity>(EnumResultVo.SUCCESS, entity);
    }

    @Override
    public String getNameById(Integer id) {
        return userRepository.getNameById(id);
    }

    @Override
    public ResultVo<ManageUserEntity> updManageUserPwd(int userId, String oldPwd, String newPwd) {
        ManageUserEntity user = userRepository.getManageUserById(userId);
        if(user==null)return new ResultVo(EnumResultVo.DataError, "用户不存在");
        String finalPwd = MD5Utils.MD5Encode(MD5Utils.MD5Encode(oldPwd) + user.getUserSalf());
        if (finalPwd.equals(user.getUserPwd()) == false) return new ResultVo(EnumResultVo.DataError, "旧密码不正确");
        String pwd_rand = RandomUtils.randomString(8);
        userRepository.updManageUserPwd(userId, MD5Utils.MD5Encode(MD5Utils.MD5Encode(newPwd) + pwd_rand), pwd_rand);
        return new ResultVo<>(EnumResultVo.SUCCESS, user);
    }
}
